<!DOCTYPE html>
<html lang="zh-CN">
<html lang="zh-CN">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
    ！注意写上题目题数
    例如 ：
    1、选择题
        (1) D
        (2) C
        (3) true false false
        (4) D
        (5) C
    2、填空题
        (1) 
            1.1获取节点方法：
                1.getElementById
                2.getElementsByClassName
                3.getElementByTagName
                4.getElementsByName
                5. querySelector
                6.querySelectorAll
                7.getAttribute(属性名)

            1.2创建节点方法:
                createElement(元素名称)
                createTextNode(文本)
                setAttribute

            1.3添加节点方法:
                node.append ( element)
                node.appendChild(element)

            1.4dom的其他操作方法:
                node. replacechild ( newNode, oldNode) ;
                替换节点(用新的节点替换某个子节点)
                node.insertBefore(newElement, element)
                插入节点
                innerHTML
                outerHTML
        (2)
            Object.prototype
            Function.prototype
            Function.prototype.__proto__
            Array.prototype
            Array.prototype.__proto__
            Function.prototype
            Array.prototype
            Object.prototype
            Function.__proto__.__proto__
    3.
        (1)什么是ajax
            执行异步网络请求,是一种创建动态网页技术
        (2)
            this指向的是构造函数，有__proto__属性，
            原型有constructor和__proto__属性
        (3)
            event loop是计算机系统的一种运行机制
        (4)
            原型（对象属性）
            我们创建的每个函数都有一个对象（prototype属性），这个属性是一个指针，指向的是一个对象，这个对象包含了通过构造函数所创建的实例对象共享的属性和方法
            原型链
            实例对象（proto）与原型（prototype）之间的连接，叫原型链
    4.
        (1)'Goodbye Jack'
        (2)10
        (3)21
        (4)667
        (5)"Hy"  "Jack"
        (6)Jack HanMeiMei
        (7)1    报错
    5.
        (1)
        ES5:
        let Animal=function(type){
            this.type=type
        }
        Animal.prototype.eat=function(){
            console.log('喜欢刺鱼');
        }
        var cat=new Animal("cat");
        console.log(cat);
        cat.constructor.prototype.eat=function(){
            console.log("喵喵");
        }
        cat.eat();

        ES6
        class Animal{
           constructor(type,name){
            this.type=type
            this.name=name
           }
           eat() {
                console.log(this.name+'喜欢刺鱼');
            }
        }
        var cat=new Animal("cat","小黄");
        console.log(cat);
        cat.eat();

        (2)
         
            function ajax(_url, _data, _method) {
            let method = _method || "GET";
            let data = _data || null;
            return new Promise((resolve, reject) => {
                let xhr = new XMLHttpRequest();
                if(method.toUpperCase() == "GET"){
                    let str="?";
                    for(let k in data){
                        str+=`${k}=${data[k]}&`
                    };
                    str=str.slice(0,-1);
                    xhr.open(method,_url+str);
                }else{
                    xhr.open(method,_url+str);
                }
                xhr.setRequestHeader("Content-Type", "application/json");
                xhr.send(JSON.stringify(data));
                xhr.addEventListener("readystatechange", () => {
                    if (xhr.readyState == 4) {
                        if (xhr.status == 200) {
                            resolve(JSON.parse(xhr.responseText));
                        } else {
                            reject(JSON.parse(xhr.responseText));
                        }
                    }
                })

            })
        }

        (3)
        1、let arr=[1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
            let arr1=[];
            for (var i = 0; i < arr.length; i++) {  
                if (arr1.indexOf(arr[i]) == -1) {
                    arr1.push(arr[i]);
                }
            }
            console.log(arr1);
        2、
             let arr=[1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
        
            console.log(...new Set(arr));
        3、
            let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];

        for (let i = 0; i < arr.length; i++) {
            for (let j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1); 
                    j--;
                }
            }
        }
        console.log(arr);

        4、
            let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];

        arr.sort();  
            //定义结果数组  
            var arr1=[];  
            for(var i = 1; i < arr.length; i++){    //从数组第二项开始循环遍历数组  
                //判断相邻两个元素是否相等，如果相等说明数据重复，否则将元素写入结果数组  
                if(arr[i] !== arr1[arr1.length - 1]){  
                    arr1.push(arr[i]);  
                }              
            }  
        console.log(arr1);
    -->
    <script>
        let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];

        arr.sort();  
            //定义结果数组  
            var arr1=[];  
            for(var i = 1; i < arr.length; i++){    //从数组第二项开始循环遍历数组  
                //判断相邻两个元素是否相等，如果相等说明数据重复，否则将元素写入结果数组  
                if(arr[i] !== arr1[arr1.length - 1]){  
                    arr1.push(arr[i]);  
                }              
            }  
        console.log(arr1);
    </script>
</body>

</html>